﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SOAPReniecService.Dominio;
using System.Data.SqlClient;

namespace SOAPReniecService.Persistencia
{
    public class PersonaDAO
    {
        public Persona Crear(Persona PersonaACrear)
        {
            Persona PersonaCreada = null;
            string sql = "INSERT INTO t_Persona VALUES (@dni, @nombre, @apellidoPaterno, @apellidoMaterno)";
            using (SqlConnection cn = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                cn.Open();
                using (SqlCommand com = new SqlCommand(sql, cn))
                {
                    com.Parameters.Add(new SqlParameter("@dni", PersonaACrear.dni));
                    com.Parameters.Add(new SqlParameter("@nombre", PersonaACrear.nombre));
                    com.Parameters.Add(new SqlParameter("@apellidoPaterno", PersonaACrear.apellidoPaterno));
                    com.Parameters.Add(new SqlParameter("@apellidoMaterno", PersonaACrear.apellidoMaterno));
                    com.ExecuteNonQuery();
                }
            }

            PersonaCreada = Obtener(PersonaACrear.dni);
            return PersonaCreada;
        }

        public Persona Obtener(int dni)
        {
            Persona PersonaEncontrada = null;
            string sql = "SELECT * FROM t_Persona WHERE dni = @dni";
            using (SqlConnection cn = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                cn.Open();
                using (SqlCommand com = new SqlCommand(sql, cn))
                {
                    com.Parameters.Add(new SqlParameter("@dni", dni));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            PersonaEncontrada = new Persona()
                            {
                                dni = (int)resultado["dni"],
                                nombre = (string)resultado["nombre"],
                                apellidoPaterno = (string)resultado["apellidoPaterno"],
                                apellidoMaterno = (string)resultado["apellidoMaterno"]
                            };
                        }
                    }
                }
            }
            return PersonaEncontrada;
        }

        public List<Persona> ListarPersonas()
        {
            List<Persona> PersonasEncontradas = new List<Persona>();
            Persona PersonaEncontrada = null;
            string sql = "SELECT * FROM t_Persona";
            using (SqlConnection con = new SqlConnection(ConexionUtil.ObtenerCadena()))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        while (resultado.Read())
                        {
                            PersonaEncontrada = new Persona()
                            {
                                dni = (int)resultado["dni"],
                                nombre = (string)resultado["nombre"],
                                apellidoPaterno = (string)resultado["apellidoPaterno"],
                                apellidoMaterno = (string)resultado["apellidoMaterno"],
                            };
                            PersonasEncontradas.Add(PersonaEncontrada);
                        }
                    }
                }
            }
            return PersonasEncontradas;
        }
    }
}